/**
 * Beschreiben Sie hier die Klasse Auftrag.
 * 
 * @author christoph.stueber@mes-alsfeld.de
 * @version Schuljahr 2013/2014
 *          erstellt 15.03.2014
 *          geändert 06Ï.04.2014
 */
public class Auftrag
{

    /** */
    private static int auftragsZaehler = 0;

    /** */
    private int auftragsNr;

    /** */
    private Datum auftragsDatum;

    /** */
    private Kunde einKunde;

    /** */
    Liste<Buchung> buchungen;

    /**
     * Konstruktor für Objekte der Klasse Auftrag.
     * 
     * @param k
     */
    public Auftrag(Kunde k)
    {
	++auftragsZaehler;
	this.auftragsNr = auftragsZaehler;
	this.auftragsDatum = new Datum();
	this.einKunde = k;
	this.einKunde.hinzufuegenAuftrag(this);
	this.buchungen = new Liste<Buchung>();
    }

    /**
     * Accessor für die Buchungen des Auftrags.
     * 
     * @return Liste<Buchung>
     */
    public Liste<Buchung> getBuchungen()
    {
	return buchungen;
    }

    /**
     * Accessor für einKunde.
     * 
     * @return Kunde
     */
    public Kunde getKunde()
    {
	return einKunde;
    }

    /**
     * Accessor für Auftragsnummer
     * 
     * @return int
     */
    public int getAuftragsNummer()
    {
	return auftragsNr;
    }

    /**
     * hinzufuegenBuchung fügt eine Buchung zum Auftrag hinzu.
     * 
     * @param b Buchung
     */
    public void hinzufuegenBuchung(Buchung b)
    {
	buchungen.add(b);
    }

    /**
     * toString-Methode
     */
    public String toString()
    {
	StringBuilder sb = new StringBuilder();
	sb.append("Auftrag : ").append(auftragsNr).append('\n');
	sb.append("Kunde   :").append(einKunde.getName()).append('\n');
	sb.append("Datum   : ").append(auftragsDatum).append('\n');

	for (Buchung b : buchungen)
	{
	    sb.append("- ").append(b).append('\n');
	}

	return sb.toString();
    }

}
